package com.ctshk.rpc.hotel.req;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

@Data
@ApiModel(value="HotelPlaceOrderReq对象", description="填写酒店订单信息req")
public class HotelPlaceOrderReq implements Serializable {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "销售单号")
    private String orderNumber;

    @ApiModelProperty(value = "酒店产品id")
    private Long hotelProductId;

    @ApiModelProperty(value = "入住日期")
    private LocalDateTime effectiveDate;

    @ApiModelProperty(value = "离店日期")
    private LocalDateTime departureDate;

    @ApiModelProperty(value = "购买数量")
    private Integer number;

    @ApiModelProperty(value = "是否代理")
    private Integer isAgent;

    @ApiModelProperty(value = "代理公司id")
    private Long agencyId;

    @ApiModelProperty(value = "代理公司")
    private String agencyCompany;

    @ApiModelProperty(value = "代理人名称")
    private String agentUserName;

    @ApiModelProperty(value = "订单金额")
    private BigDecimal orderAmount;

    @ApiModelProperty(value = "付款状态")
    private Integer paymentStatus;

    @ApiModelProperty(value = "预订状态")
    private Integer scheduledStatus;

    @ApiModelProperty(value = "取消状态")
    private Integer cancelStatus;

    @ApiModelProperty(value = "产品类型")
    private Integer productType;

    @ApiModelProperty(value = "来源")
    private Integer source;

    @ApiModelProperty(value = "销售人员id")
    private Long salesmanId;

    @ApiModelProperty(value = "销售人员名称")
    private String salesmanName;

    @ApiModelProperty(value = "联系人姓")
    private String surname;

    @ApiModelProperty(value = "联系人名")
    private String name;

    @ApiModelProperty(value = "联系人姓名")
    private String contactName;

    @ApiModelProperty(value = "联系人手机")
    private String contactMobile;

    @ApiModelProperty(value = "联系人手机区号id")
    private Long contactMobileAreaCodeId;

    @ApiModelProperty(value = "联系人手机区号")
    private String contactMobileAreaCode;

    @ApiModelProperty(value = "联系人邮箱")
    private String contactEmail;

    @ApiModelProperty(value = "付款到期时间")
    private LocalDateTime payExpireDate;

    @ApiModelProperty(value = "会员id")
    private String memberId;

    @ApiModelProperty(value = "使用积分")
    private Integer usingPoints;

    @ApiModelProperty(value = "优惠卷id")
    private Long couponId;

    @ApiModelProperty(value = "备注")
    private String remark;

    @ApiModelProperty(value = "创建人")
    private Long createId;

    @ApiModelProperty(value = "修改人")
    private Long modifiedId;

    @ApiModelProperty(value = "删除标识")
    private Integer isDeleted;

    @ApiModelProperty(value = "性别")
    private Integer gender;

    @ApiModelProperty(value = "应收金额")
    private BigDecimal receivableAmount;

    @ApiModelProperty(value = "已退款金额")
    private BigDecimal refundedAmount;

    @ApiModelProperty(value = "销售方式(1：单品销售 2：打包销售)")
    private Integer salesMethods;

    @ApiModelProperty(value = "酒店名称")
    private String hotelName;

    @ApiModelProperty(value = "房间名称")
    private String roomName;

    @ApiModelProperty(value = "酒店产品名称")
    private String hotelProductName;

    @ApiModelProperty(value = "是否含早")
    private Integer hasBreakfast;

    @ApiModelProperty(value = "旅客信息")
    private List<HotelOrderTouristReq> hotelOrderTouristReqList;

    @NotNull(message = "服务个数不能为空")
    @ApiModelProperty(value = "服务个数")
    private Integer serviceNum;

    @NotNull(message = "单间服务费不能为空")
    @ApiModelProperty(value = "单间服务费")
    private BigDecimal fee;

    @NotNull(message = "单间酒店价格不能为空")
    @ApiModelProperty(value = "单间酒店价格不能为空")
    private BigDecimal singleTicketFee;

    @ApiModelProperty(value = "会员积分抵扣(100积分抵扣1元人民币,已换算成港币)")
    private BigDecimal integralDeduction;

    @ApiModelProperty(value = "优惠券抵扣金额")
    private BigDecimal couponDeduction;
}
